# 4.7 人脸识别

## 4.7.1 算法简介

![18](./media/18.png)

判断图像中是否有人脸及识别人脸，用户可通过功能按键训练存储或删除人脸数据，Sengo1可以存储10张人脸数据。

-----------------

## 4.7.2 人脸分类标签

Sengo1定义了11个人脸的分类标签：

| 分类标签 |  含义  | 分类标签 |        含义        |
| :------: | :----: | :------: | :----------------: |
|    0     | 新人脸 |   1-10   | 存储的人脸分类编号 |

新人脸（标签 0）：

![16](./media/16.png)

存储的人脸（标签 1-10）

![18](./media/18.png)

---------------

## 4.7.3 保存人脸数据

开启人脸识别算法后，将摄像头正对人脸，按下功能按键约5秒后松开，Sengo1开始训练人脸，约3帧数据后，图像中当前的人脸数据会保存在Flash中，并分配一个人脸ID编号。

人脸数据的编号即标签值的分配原则：当前可用编号中最小的号。如果无空余编号，则Sengo1会提示保存失败。

![17](./media/17.png)

----------------

## 4.7.4 删除人脸数据

执行完毕人脸存储操作后，按下功能按键约10秒后松开，即可删除刚存储的人脸数据；再次按下10秒后，则会清空存储的全部人脸数据。若算法开启后未执行过人脸保存操作，则下功能按键10秒后会直接清空全部的人脸数据。

------------------

## 4.7.5 使用技巧

1. 环境光线充足，正对人脸且完整的人脸在视野中较大时识别效果佳
2. 佩戴眼镜或头发遮住面部时，会影响人脸检测效果

----------------

## 4.7.6 代码

1. 在代码启动中设置串口波特率为`9600`，然后设置AI视觉模块的通信方式为`I2C`，再设置AI视觉模块运行`人脸识别`模式

![a57](./media/a57.png)

2. 使用判断模块对检测数量进行判断，只有检测数量大于0时才使用串口打印模块进行人脸数据的输出，注意选择的是`人脸识别`

**完整代码：**

![a58](./media/a58.png)

--------------------

## 4.7.7 代码结果

上传代码后，按住AI视觉模块后面的功能按键并保持5秒然后对准人脸等待一会学习完毕后就可以对物体进行识别了，当遇到新的人脸也是会提示的。

![18](./media/18.png)

![a59](./media/a59.png)

